import Http, {ID, PARAMS} from '@/api/http';
import ListObject from '@/structure/listObject';
import Position from '@/structure/position';
import PositionBatchRequest from '@/structure/positionBatchRequest';

const BASE = 'user/user/position';

/**
 * 职务
 */
class PositionApi extends Http {
  /**
   * 根据用户ID查询列表
   * @param userIds 用户ID
   * @return 用户职务列表
   */
  public queryByUserIds(userIds: ID[]): Promise<{ [key: string]: Position[] }> {
    return super.post0(`${BASE}/queryByUserIds`, userIds);
  }

  /**
   * 查询列表
   * @param params 参数
   * @return 职务列表
   */
  public findList(params: PARAMS): Promise<ListObject<Position>> {
    return super.get0(BASE, {
      params
    });
  }

  /**
   * 查询全部
   * @param params 参数
   * @return 职务列表
   */
  public findAll(params: PARAMS): Promise<Position[]> {
    return super.get0(`${BASE}/all`, {
      params
    });
  }

  /**
   * 保存
   * @param userId 用户ID
   * @param departmentId 部门ID
   * @param dutyId 职位ID
   * @return 响应
   */
  public save({userId, departmentId, dutyId}: Position): Promise<void> {
    return super.post0(`${BASE}/${userId}/${departmentId}/${dutyId}`);
  }

  /**
   * 批量保存
   * @param request 职位批量编辑请求
   * @return 响应
   */
  public batchSave(request: PositionBatchRequest): Promise<void> {
    return super.post0(`${BASE}/batchSave`, request);
  }

  /**
   * 删除
   * @param userId 用户ID
   * @param departmentId 部门ID
   * @param dutyId 职位ID
   * @return 响应
   */
  public delete({userId, departmentId, dutyId}: Position): Promise<void> {
    return super.delete0(`${BASE}/${userId}/${departmentId}/${dutyId}`);
  }

  /**
   * 批量删除
   * @param request 职位批量编辑请求
   * @return 响应
   */
  public batchDelete(request: PositionBatchRequest): Promise<void> {
    return super.post0(`${BASE}/batchDelete`, request);
  }
}

export default new PositionApi();
